Hãy tưởng tượng dữ liệu thô như một luồng không nhãn—a vùng đất hoang dã của bộ nhớ. Trong Rust, chúng ta bắt đầu bằng cách xử lý dữ liệu dưới dạng các khối liên tiếp (mảng con và mảng). Sự chuyển đổi từ dữ liệu thô sang các lược đồ được định nghĩa đánh dấu sự dịch chuyển từ bộ nhớ vô danh sang các cấu trúc có mục đích.
1. Mức độ "thô"
Mảng con và mảng đại diện cho dữ liệu ở dạng đơn giản nhất. Tính an toàn được duy trì nhờ vào kiểm tra quyền sở hữu tại thời điểm biên dịch thay vì chi phí chạy chương trình. Sử dụng mượn (&) cho phép chúng ta tạo ra "góc nhìn" vào dữ liệu mà không cần di chuyển giá trị.
2. Giới hạn về ngữ nghĩa
Trong khi các hàm như first_word rất linh hoạt (chấp nhận String, &str, hoặc chuỗi chữ, thì chúng đạt đến giới hạn ngữ nghĩa. Máy biên dịch biết bộ nhớ an toàn, nhưng nó không biết dữ liệu thực sự đại diện cho điều gì (ví dụ: tên người dùng so với dữ liệu cảm biến) cho đến khi chúng ta ánh xạ nó thành một Struct.